Coded light refers to a technique whereby data is modulated into the visible illumination emitted by a light source, e.g. by an LED based luminaire. Thus in addition to providing illumination (for which purpose a light source may already be present in an environment), the light source also acts as a transmitter capable of transmitting data to a suitable receiver of coded light. The modulation is typically performed at a high enough frequency that it is imperceptible to human vision, i.e. so the user only perceives the overall illumination and not the effect of the data being modulated into that illumination. In this way the data may be said to be embedded into the light from the light source.
Coded light can be used in a number of applications. For instance, one application is to provide information from a luminaire to a remote control unit for controlling that luminaire, e.g. to provide an identifier distinguishing it amongst other such luminaires which the remote unit can control, or to provide status information on the luminaire (e.g. to report errors, warnings, temperature, operating time, etc.). In one such example, the remote control unit may comprise a mobile user terminal such as a smart phone or tablet having an inbuilt camera. With the terminal running a suitable application, the user can direct the camera at a luminaire and thereby detect the identifier coded into the light from that luminaire. Given the identifier of the luminaire it is looking at, the terminal may then control that luminaire by sending back a return signal (e.g. via RF).
In another application the coded light may be used to provide information to a user, e.g. to provide identifiers of the luminaires for use in commissioning, or to enable provision of location related information. For example each luminaire in an indoor and/or outdoor environment (e.g. in the rooms and corridors of an office complex, and/or paths of a campus) may be arranged to emit light embedded with a respective identifier identifying it within that environment. If a user has a mobile terminal equipped with a camera, and an associated application for detecting coded light, the terminal can detect the identifier of a luminaire illuminating its current location. This can then be used to help the user navigate the environment, by looking up the current location in location database mapping the identifiers to locations of the luminaires. Alternatively or additionally, this may be used to look up information associated with the user's current location, such as information on exhibits in particular rooms of a museum. E.g. the look up may be performed via the Internet or a local network to which the terminal has access, or from a local database on the user terminal. Alternatively the information could be directly coded into the light from one or more luminaires. Generally speaking, the applicability of coded light is not limited.
Data is modulated into the light by means of a technique such as amplitude keying or frequency shift keying, whereby the modulated property (e.g. amplitude of frequency) is used to represent channel symbols. The modulation typically involves a coding scheme to map data bits (sometimes referred to as user bits) onto such channel symbols. An example is a conventional Manchester code, which is a binary code whereby a user bit of value 0 is mapped onto a channel symbol in the form of a low-high pulse and a user bit of value 1 is mapped onto a channel symbol in the form of a high-low pulse. Another example is the recently developed Ternary Manchester code, described in international patent application publication no. WO2012/052935.
Ternary Manchester now forms a part of the state of the art and is thus known to skilled person, but it is summarized again here for completeness. At the transmitter, each data bit to be transmitted is mapped to a channel symbol in the form of a respective unit pulse. According to this scheme, there are two possible units, in the form of positive and negative “hat” functions as shown in FIG. 5. The pulse mapped to a data bit of value 1 is shown on the left hand side of FIG. 5, and the pulse mapped to a data bit of value 0 is shown on the right hand side of FIG. 5. A data bit is a bit of actual information to be transmitted, sometimes referred to as “user data” (even if not explicitly created by a user). The data bit period is labeled TD in FIG. 5, with the boundaries between user bit periods shown with vertical dashed lines.
Each unit pulse comprises a sequence of elementary channel periods of length TC in time, smaller than the data bit period. Each elementary channel period conveys just one of the elementary levels that the coded signal can take (one ternary Manchester symbol), and is not alone sufficient to convey data without being modulated into a composite channel symbol. Hence each pulse of length TD is the smallest or most fundamental unit of information content that can be conveyed using the coding scheme in question.
In the ternary Manchester code, each unit hat function comprises a sequence of three elementary channel periods of length TC in time, each half the length of the data bit period TD (TD=2TC). The three elementary periods for a respective data bit are contiguous, with the middle of the three being located at the center of the respective data bit period, so that the adjacent first and third elementary channel periods straddle the beginning and end boundaries of the data bit period respectively by half an elementary channel period TC either side.
For a data bit of value 1, this is mapped to the positive hat function shown on the left of FIG. 5. The positive hat function comprises: a first elementary channel period of height−½ centered on the beginning (earlier) boundary of the respective data bit period, followed by second (middle) elementary channel period of height+1 being centered on the respective data bit period, followed by a third elementary channel symbol of height−½ centered on the end (later) boundary of the respective data bit period. The “height” at this stage may be represented in any suitable terms such as a dimensionless digital value (ultimately to be represented by the modulated signal property, e.g. amplitude or frequency).
For a data bit of value 0, this is mapped to the negative hat function shown on the right of FIG. 5. The negative hat function comprises: a first elementary channel period of height+½ centered on the beginning (earlier) boundary of the respective data bit period, followed by second (middle) elementary channel period of height−1 being centered on the respective data bit period, followed by a third elementary channel period of height+½ centered on the end (later) boundary of the respective data bit period.
To create the coded bit stream to be transmitted, the hat functions of adjacent user bits are added to one another, offset by the times of their respective bit periods. Because the hat functions overlap across the boundaries between data bit periods, the functions add in the overlapping regions between adjacent data bits. That is, the hat functions are joined along the boundaries, so the earlier boundary An of one data bit period is joined with the later bit boundary An+1 of the preceding adjacent data bit period, with the height of the signal being summed where the two adjacent pulses overlap. An example of a resulting sequence of channel symbols in the time domain is shown in FIG. 6.
Where two adjacent data bits are of value 1, this means the two overlapping elementary channel periods of height−½ add to a height of −1. Where two adjacent data bits are of value 0, the two overlapping elementary channel periods of height+½ add to height+1. Where two adjacent data bits are of different values, the two overlapping elementary channel periods of height+½ and −½ add to 0. Thus in the coded stream, each user bit period (each unit pulse) takes the form of either a positive pulse of a rectangular wave when a user bit of value 1 is sandwiched between two adjacent user bits of value 1, or a negative pulse of a rectangular wave when a user bit of value 0 is sandwiched between two adjacent user bits of value 0, or an uneven pulse of one or four possible configurations with straight edges when at least one of the adjacent user bits is different.
In an equivalent variant, the mapping of data bit values 0 and 1 to positive and negative hat functions may be reversed.
The resulting signal (e.g. that of FIG. 6) is then converted into a variation in the modulated property of the signal output by the transmitting light source (e.g. whether represented in terms of amplitude or frequency). For example, elementary channel symbol −1 may be represented by a low light output level, the elementary channel symbol +1 may be represented by a high output light level, and the elementary channel symbol 0 may be represented by an intermediate light level between the high and low.
The ternary Manchester code can be advantageous as it provides a smoother transition when the data bits change value than a conventional Manchester code, and results in a spectrum in the frequency domain that is more suppressed around low frequencies where interference such as mains hum may occur. However, the applicability of the present disclosure is not limited to ternary Manchester and in other embodiments other examples of suitable coding schemes may be used, e.g. a conventional (binary) Manchester code, or other conventional binary or ternary lines codes.
There is a growing interest in using coded light in applications where the light from a light source is to be captured using a rolling shutter camera, such as the cheap cameras often found in mobile phone devices. A rolling shutter camera scans the lines of the image one at a time, line-by-line (typically at a minimum of 18 k lines/s). As the lines are recorded time-sequentially, and the codes in the light may also vary time-sequentially, additional processing is involved. Typically the samples on a line are “integrated” or “condensed” into a single value per line. Each line thus captures a sample of the signal at a different moment in time, enabling the coded light signal to be reconstructed.